home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 July / Chip_2000-07_cd.bin / sharewar / vbshpdfc / Install.exe / VB Shaped Form Creator.CAB / DropDown.frm < prev    next >
Text File  |  1999-12-22  |  14KB  |  340 lines

  1. VERSION 5.00
  2. Begin VB.Form Mainwin 
  3.    AutoRedraw      =   -1  'True
  4.    BorderStyle     =   0  'None
  5.    Caption         =   "VBSFC DropDown Demo"
  6.    ClientHeight    =   3195
  7.    ClientLeft      =   3645
  8.    ClientTop       =   3000
  9.    ClientWidth     =   4695
  10.    ControlBox      =   0   'False
  11.    MaxButton       =   0   'False
  12.    Picture         =   "DropDown.frx":0000
  13.    ScaleHeight     =   213
  14.    ScaleMode       =   3  'Pixel
  15.    ScaleWidth      =   313
  16.    Begin VB.PictureBox ControlHolder 
  17.       BackColor       =   &H00C0C0C0&
  18.       BorderStyle     =   0  'None
  19.       Height          =   1635
  20.       Left            =   60
  21.       ScaleHeight     =   1635
  22.       ScaleWidth      =   4515
  23.       TabIndex        =   4
  24.       Top             =   300
  25.       Width           =   4515
  26.       Begin VB.CommandButton btnDrop 
  27.          Caption         =   "More..."
  28.          Default         =   -1  'True
  29.          Height          =   375
  30.          Left            =   3180
  31.          TabIndex        =   5
  32.          Top             =   1200
  33.          Width           =   1155
  34.       End
  35.       Begin VB.Label Label2 
  36.          Alignment       =   2  'Center
  37.          Caption         =   "DropDown Demo by Alex Vallat 1999"
  38.          Height          =   195
  39.          Left            =   0
  40.          TabIndex        =   10
  41.          Top             =   0
  42.          Width           =   4575
  43.       End
  44.       Begin VB.Label Label3 
  45.          Alignment       =   2  'Center
  46.          Caption         =   "Using Visual Basic Shaped Form Creator 5.9"
  47.          Height          =   255
  48.          Left            =   0
  49.          TabIndex        =   9
  50.          Top             =   300
  51.          Width           =   4575
  52.       End
  53.       Begin VB.Label Link 
  54.          Caption         =   "http://www.comports.com/AlexV"
  55.          BeginProperty Font 
  56.             Name            =   "MS Sans Serif"
  57.             Size            =   8.25
  58.             Charset         =   0
  59.             Weight          =   400
  60.             Underline       =   -1  'True
  61.             Italic          =   0   'False
  62.             Strikethrough   =   0   'False
  63.          EndProperty
  64.          ForeColor       =   &H8000000D&
  65.          Height          =   195
  66.          Index           =   0
  67.          Left            =   1080
  68.          MouseIcon       =   "DropDown.frx":30E5E
  69.          MousePointer    =   99  'Custom
  70.          TabIndex        =   8
  71.          Top             =   840
  72.          Width           =   2355
  73.       End
  74.       Begin VB.Label Link 
  75.          Caption         =   "http://www.comports.com/AlexV/VBSFC.html"
  76.          BeginProperty Font 
  77.             Name            =   "MS Sans Serif"
  78.             Size            =   8.25
  79.             Charset         =   0
  80.             Weight          =   400
  81.             Underline       =   -1  'True
  82.             Italic          =   0   'False
  83.             Strikethrough   =   0   'False
  84.          EndProperty
  85.          ForeColor       =   &H8000000D&
  86.          Height          =   195
  87.          Index           =   1
  88.          Left            =   600
  89.          MouseIcon       =   "DropDown.frx":30FB0
  90.          MousePointer    =   99  'Custom
  91.          TabIndex        =   7
  92.          Top             =   600
  93.          Width           =   3315
  94.       End
  95.       Begin VB.Label Link 
  96.          Caption         =   "AlexV@ComPorts.com"
  97.          BeginProperty Font 
  98.             Name            =   "MS Sans Serif"
  99.             Size            =   8.25
  100.             Charset         =   0
  101.             Weight          =   400
  102.             Underline       =   -1  'True
  103.             Italic          =   0   'False
  104.             Strikethrough   =   0   'False
  105.          EndProperty
  106.          ForeColor       =   &H8000000D&
  107.          Height          =   195
  108.          Index           =   2
  109.          Left            =   60
  110.          MouseIcon       =   "DropDown.frx":31102
  111.          MousePointer    =   99  'Custom
  112.          TabIndex        =   6
  113.          Top             =   1320
  114.          Width           =   1635
  115.       End
  116.    End
  117.    Begin VB.PictureBox DropHolder 
  118.       BorderStyle     =   0  'None
  119.       Height          =   1050
  120.       Left            =   120
  121.       Picture         =   "DropDown.frx":31254
  122.       ScaleHeight     =   1050
  123.       ScaleWidth      =   4455
  124.       TabIndex        =   0
  125.       Top             =   1965
  126.       Width           =   4455
  127.       Begin VB.CommandButton btnUp 
  128.          Caption         =   "t"
  129.          BeginProperty Font 
  130.             Name            =   "Marlett"
  131.             Size            =   8.25
  132.             Charset         =   2
  133.             Weight          =   500
  134.             Underline       =   0   'False
  135.             Italic          =   0   'False
  136.             Strikethrough   =   0   'False
  137.          EndProperty
  138.          Height          =   165
  139.          Left            =   4100
  140.          TabIndex        =   2
  141.          Top             =   740
  142.          Width           =   165
  143.       End
  144.       Begin VB.Label Label1 
  145.          Caption         =   "This part could have some controls in it..."
  146.          Height          =   195
  147.          Left            =   300
  148.          TabIndex        =   3
  149.          Top             =   480
  150.          Width           =   3315
  151.       End
  152.    End
  153.    Begin VB.PictureBox DropBitHider 
  154.       BorderStyle     =   0  'None
  155.       Height          =   1005
  156.       Left            =   120
  157.       Picture         =   "DropDown.frx":4067E
  158.       ScaleHeight     =   1005
  159.       ScaleWidth      =   4455
  160.       TabIndex        =   1
  161.       Top             =   1260
  162.       Width           =   4455
  163.    End
  164.    Begin VB.Image TempHolder 
  165.       Height          =   255
  166.       Left            =   3180
  167.       Top             =   0
  168.       Visible         =   0   'False
  169.       Width           =   255
  170.    End
  171.    Begin VB.Image CloseHolder 
  172.       Height          =   210
  173.       Left            =   3660
  174.       Picture         =   "DropDown.frx":4F034
  175.       Top             =   0
  176.       Visible         =   0   'False
  177.       Width           =   240
  178.    End
  179.    Begin VB.Image MinHolder 
  180.       Height          =   210
  181.       Left            =   3420
  182.       Picture         =   "DropDown.frx":4F316
  183.       Top             =   0
  184.       Visible         =   0   'False
  185.       Width           =   240
  186.    End
  187.    Begin VB.Image Min 
  188.       Height          =   210
  189.       Left            =   3930
  190.       Picture         =   "DropDown.frx":4F5F8
  191.       Top             =   45
  192.       Width           =   240
  193.    End
  194.    Begin VB.Image CloseB 
  195.       Height          =   210
  196.       Left            =   4200
  197.       Picture         =   "DropDown.frx":4F8DA
  198.       Top             =   45
  199.       Width           =   240
  200.    End
  201. End
  202. Attribute VB_Name = "Mainwin"
  203. Attribute VB_GlobalNameSpace = False
  204. Attribute VB_Creatable = False
  205. Attribute VB_PredeclaredId = True
  206. Attribute VB_Exposed = False
  207. 'What are all the picture boxes for?
  208. 'DropBitHider:  Hides the dropping part of the form (controls, pictures, etc.) when not in use
  209. 'DropHolder:    Contains all the controls and picture for the dropping part of the form
  210. 'ControlHolder: Contains normal part controls - so the labels are not hidden by DropBitHider.  If not using labels, then you don't need this.
  211.  
  212. Option Explicit
  213. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  214. Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
  215. Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  216. Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  217. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  218. Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  219. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  220. Private Declare Function ReleaseCapture Lib "user32" () As Long
  221. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  222. Private Const RGN_COPY = 5
  223. Private ResultRegion As Long, WindowRegion As Long
  224.  
  225. Private Function CreateFormRegion(ScaleX As Single, ScaleY As Single, OffsetX As Integer, OffsetY As Integer) As Long
  226. 'This sub created by VBSFC
  227.     Dim HolderRegion As Long, ObjectRegion As Long, nRet As Long, Counter As Integer
  228.     ResultRegion = CreateRectRgn(0, 0, 0, 0)
  229.     HolderRegion = CreateRectRgn(0, 0, 0, 0)
  230.     ObjectRegion = CreateRoundRectRgn(0 * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX, 0 * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY, 313 * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX, 161 * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY, 32 * ScaleX * 15 / Screen.TwipsPerPixelX, 32 * ScaleY * 15 / Screen.TwipsPerPixelY)
  231.     nRet = CombineRgn(ResultRegion, ObjectRegion, ObjectRegion, RGN_COPY)
  232.     DeleteObject ObjectRegion
  233.     ObjectRegion = CreateEllipticRgn(0 * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX, 137 * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY, 312 * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX, 184 * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY)
  234.     nRet = CombineRgn(HolderRegion, ResultRegion, ResultRegion, RGN_COPY)
  235.     nRet = CombineRgn(ResultRegion, HolderRegion, ObjectRegion, 4)
  236.     DeleteObject ObjectRegion
  237.     DeleteObject HolderRegion
  238.     CreateFormRegion = ResultRegion
  239. End Function
  240.  
  241. Private Sub Form_Load()
  242.     Dim nRet As Long, TempRgn As Long
  243.     'Position the dropping part
  244.     DropHolder.ZOrder 1
  245.     DropHolder.Top = 71
  246.     
  247.     'Keep a copy of the window region
  248.     WindowRegion = CreateRectRgn(0, 0, 0, 0)
  249.     TempRgn = CreateFormRegion(1, 1, 0, 0)
  250.     nRet = CombineRgn(WindowRegion, TempRgn, 0, RGN_COPY)
  251.     
  252.     'Set window and hider picture box regions.
  253.     'The hider picture box is necessary to stop the dropping
  254.     'part being visible when not dropped
  255.     nRet = SetWindowRgn(Me.hwnd, TempRgn, True)
  256.     nRet = SetWindowRgn(DropBitHider.hwnd, CreateFormRegion(1, 1, -DropBitHider.Left, -DropBitHider.Top), True)
  257. End Sub
  258.  
  259. Private Sub btnDrop_Click()
  260.     Animate
  261. End Sub
  262. Private Sub btnUp_Click()
  263.     AnimateReverse
  264. End Sub
  265.  
  266. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  267.     If Y < 19 Then 'If inside titlebar area
  268.         ReleaseCapture
  269.         SendMessage Me.hwnd, &HA1, 2, 0&
  270.     End If
  271. End Sub
  272. Private Sub Form_Unload(Cancel As Integer)
  273.     DeleteObject ResultRegion
  274.     DeleteObject WindowRegion
  275. End Sub
  276. Private Sub Animate()
  277.     Dim Counter As Integer
  278.     For Counter = -64 To 0 Step 4 'If you want larger steps, modify this line (changes drop speed)
  279.         'Adjust window shape
  280.         SetWindowRgn Me.hwnd, 0, False
  281.         SetWindowRgn Me.hwnd, DropRegion(WindowRegion, 1, 1, 0, Counter), True
  282.         'Move dropping part controls and picture
  283.         DropHolder.Top = 131 + Counter
  284.         DoEvents
  285.     Next Counter
  286. End Sub
  287. Private Sub AnimateReverse()
  288.     Dim Counter As Integer
  289.     For Counter = 0 To -64 Step -8 'If you want larger steps, modify this line (changes rise speed)
  290.         SetWindowRgn Me.hwnd, 0, False
  291.         SetWindowRgn Me.hwnd, DropRegion(WindowRegion, 1, 1, 0, Counter), True
  292.         DropHolder.Top = 131 + Counter
  293.         DoEvents
  294.     Next Counter
  295. End Sub
  296. Private Function DropRegion(ByRef CurrentRegion As Long, ScaleX As Single, ScaleY As Single, OffsetX As Integer, OffsetY As Integer) As Long
  297. 'Also copied from a VBSFC generated sub
  298.     Dim ObjectRegion As Long
  299.     DeleteObject ResultRegion
  300.     ResultRegion = CreateRectRgn(0, 0, 0, 0)
  301.     ObjectRegion = CreateRoundRectRgn(12 * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX, 120 * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY, 300 * ScaleX * 15 / Screen.TwipsPerPixelX + OffsetX, 200 * ScaleY * 15 / Screen.TwipsPerPixelY + OffsetY, 34 * ScaleX * 15 / Screen.TwipsPerPixelX, 34 * ScaleY * 15 / Screen.TwipsPerPixelY)
  302.     CombineRgn ResultRegion, CurrentRegion, ObjectRegion, 2
  303.     DeleteObject ObjectRegion
  304.     DropRegion = ResultRegion
  305. End Function
  306.  
  307. 'Button pressing handling (4 subs):
  308. Private Sub Min_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  309.     TempHolder.Picture = Min.Picture
  310.     Min.Picture = MinHolder.Picture
  311. End Sub
  312. Private Sub Min_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  313.     Min.Picture = TempHolder.Picture
  314.     Me.WindowState = 1
  315. End Sub
  316. Private Sub CloseB_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  317.     TempHolder.Picture = CloseB.Picture
  318.     CloseB.Picture = CloseHolder.Picture
  319. End Sub
  320. Private Sub CloseB_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  321.     CloseB.Picture = TempHolder.Picture
  322.     Unload Me
  323. End Sub
  324. '---
  325.  
  326. Private Sub Link_Click(Index As Integer)
  327. 'Internet Linking thing
  328.     If InStr(Link(Index).Caption, "@") <> 0 Then
  329.         LinkTo "mailto:" + Link(Index).Caption
  330.     Else
  331.         LinkTo Link(Index).Caption
  332.     End If
  333. End Sub
  334. Private Sub LinkTo(Address As String)
  335. 'Internet Linking thing
  336.     Dim Result As Long
  337.     Result = ShellExecute(Me.hwnd, "open", Address, "", "", 1)
  338.     If Result <= 32 Then Err.Raise 17
  339. End Sub
  340.